颱風天放假,但是鐵人賽還是要繼續
前面的畫面都做完了,現在來設計資料庫。
考量擴充的可能性,所以準備了用戶、平面圖表跟房間表。
透過外鍵建立關聯,用戶表與平面圖表相連,每個用戶可擁有多個平面圖,平面圖有多個房間。每個房間可包含多個家具。家具表則記錄家具的屬性和位置,並與收納物品表相連,讓家具能包含多個收納物品。收納物品表還支援巢狀結構,表示物品之間的上下層關係。
API跟資料庫都去除英文命名還有HTTP Method展示,避免可能的安全性問題
用戶表 | 欄位名稱 | 資料類型 | 說明 |
---|---|---|---|
編號 | 主鍵 | 整數 | 用戶唯一識別碼 |
名稱 | 用戶名稱 | 字串 | 用戶名稱 |
電子郵件 | 用戶電子郵件 | 字串 | 用戶電子郵件 |
頭像 | 用戶頭像 | 字串 | 用戶頭像圖片網址 |
Google編號 | Google用戶ID | 字串 | Google登入用戶編號(如使用Google登入) |
LINE編號 | LINE用戶ID | 字串 | LINE登入用戶編號(如使用LINE登入) |
創建時間 | 創建時間 | 時間戳 | 帳號創建的時間 |
更新時間 | 更新時間 | 時間戳 | 資料更新的時間 |
平面圖表 | 欄位名稱 | 資料類型 | 說明 |
---|---|---|---|
編號 | 主鍵 | 整數 | 平面圖唯一識別碼 |
用戶編號 | 外鍵 | 整數 | 對應到用戶表的編號 |
房間表 | 欄位名稱 | 資料類型 | 說明 |
---|---|---|---|
編號 | 主鍵 | 整數 | 房間唯一識別碼 |
名稱 | 房間名稱 | 字串 | 房間的名稱 |
平面圖資料 | 平面圖資料 | JSON | 房間的平面圖資料 |
平面圖編號 | 外鍵 | 整數 | 對應到平面圖表的編號 |
家具表 | 欄位名稱 | 資料類型 | 說明 |
---|---|---|---|
編號 | 主鍵 | 整數 | 家具唯一識別碼 |
房間編號 | 外鍵 | 整數 | 對應到房間表的編號 |
名稱 | 家具名稱 | 字串 | 家具名稱 |
是否收納 | 家具類型 | 字串 | 家具類型(如桌子、椅子、收納等) |
框線類型 | 框線類型 | 字串 | 家具框線樣式(如實線、虛線等) |
框線顏色 | 框線顏色 | 字串 | 家具框線的顏色 |
背景顏色 | 背景顏色 | 字串 | 家具的背景顏色 |
長度 | 家具長度 | 字串 | 家具的長度 |
寬度 | 家具寬度 | 字串 | 家具的寬度 |
位置 | 位置 | JSON | 家具在平面圖上的座標位置 |
層級 | 層級 | 整數 | 家具的層級(用於表示重疊順序) |
收納物品表 | 欄位名稱 | 資料類型 | 說明 |
---|---|---|---|
編號 | 主鍵 | 整數 | 收納物品唯一識別碼 |
家具編號 | 外鍵 | 整數 | 對應到家具表的編號 |
物品名稱 | 物品名稱 | 字串 | 收納物品名稱 |
數量 | 數量 | 整數 | 收納物品的數量 |
單位 | 單位 | 字串 | 物品的單位(如件、個等) |
備註 | 備註 | 字串 | 物品的備註 |
上層物品編號 | 外鍵 | 整數 | 對應同一表的編號,用於表示上層收納物品 |
API名稱 | 功能說明 |
---|---|
房間API | |
獲取房間資料 | 取得系統中所有房間的詳細資料,顯示房間名稱、平面圖等相關資訊。 |
新增房間 | 在系統中新增一個房間,並可設定其名稱及平面圖等資料。 |
修改房間資料 | 更新已存在的房間資料,包括名稱、平面圖或其他相關屬性。 |
刪除房間 | 刪除指定的房間,並移除其所有相關資料。 |
家具API | |
獲取家具資料 | 取得系統中所有家具的詳細資訊,顯示名稱、位置、類型等相關資料。 |
新增家具 | 在系統中新增一件家具,並可設定其名稱、位置及其他屬性。 |
修改家具資料 | 更新已存在的家具資料,包括名稱、框線、背景顏色等屬性。 |
刪除家具 | 刪除指定的家具,並移除其所有相關資料。 |
收納物品API | |
獲取收納物品資料 | 取得系統中所有收納物品的詳細資訊,包括名稱、數量及位置。 |
新增收納物品 | 在指定家具中新增收納物品,並設定其名稱、數量及備註等資訊。 |
修改收納物品資料 | 更新已存在的收納物品資料,包括名稱、數量及單位等屬性。 |
刪除收納物品 | 刪除指定的收納物品,並移除其相關資料。 |
查找物品API | |
查找收納物品 | 根據物品名稱查找收納物品,返回匹配的物品及其數量、所在家具及位置。 |